package cn.tedu.dimanage.apply.webapi.mapper;


import cn.tedu.dimanage.pojo.dto.*;
import cn.tedu.dimanage.pojo.entity.Apply;
import cn.tedu.dimanage.pojo.vo.ApplyDetailsVO;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * @Classname: ApplyMapper
 * @Author: bromide
 * @CreateTime: 2022/6/9--下午11:18
 * @Version: V1.0
 * @Description:
 * 处理“用户”数据的持久层接口
 */
@Repository
public interface ApplyMapper {

    /**
     * 增加申请
     * @param apply 用户提交的捐赠信息
     * @return 受影响行数
     */
    int addApply(Apply apply);


    /**
     * 通过id查询单个申请的详细信息(工具方法)
     * @param id 申请id
     * @return
     */
    ApplyDetailsVO selectApplyById(Long id);

    /**
     * 通过物资关键字来搜索申请的物资信息
     * 需要展示所有的时候将传过来一个空字符串就ok
     * @param keyword
     * @return
     */
    List<ApplyDetailsVO> selectApplyList(String keyword);


    /**
     * 查找单个用户的申请记录
     * @param userId 用户id
     * @return
     */
    List<ApplyDetailsVO> selectApplyListByUserId(Long userId);

    /**
     * 查找所有的出库记录
     * @param keyword 所有被同意的申请
     * @return
     */
    List<ApplyDetailsVO> selectApplyOut(String keyword);

    /**
     * 管理员审核 申请物资 时需要执行的方法
     * @param applyCheckDTO 管理员审核之后需要提交的信息
     * @return
     */
    int updateApplyByAdmin(ApplyCheckDTO applyCheckDTO);

    /**
     * 在物资申请之后,  审核通过之前  用户修改捐献信息所提交的信息
     * @return
     */
    int updateApplyByUser(ApplyUpdateDTO donationUpdateDTO);


    /**
     * 删除未同意的申请的物资(若捐献成功则不能删除)
     * @param id
     * @return
     */
    int deleteApplyById(Long id);
}
